package com.daniel.juc.lock8;

import java.util.concurrent.TimeUnit;

/**
 * 8锁，关于锁的8个问题
 * 1、标准情况下，两个线程先打印 发短信还是打电话？发短信
 * 2、发短信延迟4s，两个线程先打印 发短信还是打电话？发短信
 *
 * @author Daniel
 * @version V1.0
 * @date 2020/5/18 15:00
 */
public class Test01 {


	public static void main(String[] args) {
		Phone phone = new Phone();
		new Thread(() -> {
			phone.send();
		}, "A").start();

		// try {
		// 	TimeUnit.SECONDS.sleep(1);
		// } catch (InterruptedException e) {
		// 	e.printStackTrace();
		// }

		new Thread(() -> {
			phone.call();
		}, "B").start();
	}
}


class Phone {

	// synchronized 锁的对象是方法的调用者
	// 两个方法用的是同一个锁，谁先拿到谁先执行

	public synchronized void send() {
		// 条件2 增加休眠4秒
		try {
			TimeUnit.SECONDS.sleep(4);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}

		System.out.println("发短信");
	}

	public synchronized void call() {
		System.out.println("打电话");
	}
}
